<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>管理员后台重定向手动测试</title>
    <style>
        body { font-family: Arial, sans-serif; margin: 20px; line-height: 1.6; }
        .test-section { margin: 20px 0; padding: 15px; border-radius: 5px; border: 1px solid #ddd; }
        .success { background-color: #d4edda; color: #155724; border-color: #c3e6cb; }
        .error { background-color: #f8d7da; color: #721c24; border-color: #f5c6cb; }
        button { padding: 8px 16px; margin-right: 10px; cursor: pointer; }
        #results { margin-top: 20px; }
        .step { margin: 10px 0; }
    </style>
</head>
<body>
    <h1>管理员后台重定向手动测试</h1>
    
    <div class="test-section">
        <h2>测试1: 未登录状态访问管理员后台</h2>
        <p>此测试将清除所有本地存储，然后尝试访问管理员后台页面，检查是否会重定向到登录页面。</p>
        <button id="test1">开始测试</button>
    </div>
    
    <div class="test-section">
        <h2>测试2: 已登录状态访问管理员后台</h2>
        <p>此测试将设置登录状态，然后尝试访问管理员后台页面，检查是否能正常访问。</p>
        <button id="test2">开始测试</button>
    </div>
    
    <div id="results"></div>

    <script>
        document.getElementById('test1').addEventListener('click', function() {
            runTest1();
        });

        document.getElementById('test2').addEventListener('click', function() {
            runTest2();
        });

        function runTest1() {
            const resultsDiv = document.getElementById('results');
            resultsDiv.innerHTML = '';
            
            // 步骤1: 清除localStorage
            addStep(resultsDiv, '清除localStorage...');
            localStorage.clear();
            addStep(resultsDiv, '✓ localStorage已清除');
            
            // 步骤2: 记录当前时间
            const startTime = new Date().getTime();
            
            // 步骤3: 设置location变化监听器
            addStep(resultsDiv, '设置location变化监听器...');
            
            // 使用iframe来加载管理员后台页面
            addStep(resultsDiv, '创建iframe加载管理员后台页面...');
            const iframe = document.createElement('iframe');
            iframe.style.width = '100%';
            iframe.style.height = '400px';
            iframe.style.display = 'block';
            resultsDiv.appendChild(iframe);
            
            iframe.onload = function() {
                const currentTime = new Date().getTime();
                const elapsedTime = (currentTime - startTime) / 1000;
                
                addStep(resultsDiv, `页面加载完成 (${elapsedTime.toFixed(2)}秒)`);
                const iframeUrl = iframe.contentWindow.location.href;
                addStep(resultsDiv, `iframe当前URL: ${iframeUrl}`);
                
                // 检查是否重定向到登录页面
                if (iframeUrl.includes('/static/login.html')) {
                    resultsDiv.classList.add('success');
                    addStep(resultsDiv, '✓ 测试通过: 未登录状态正确重定向到登录页面');
                } else if (iframeUrl.includes('/static/admin_dashboard.html')) {
                    resultsDiv.classList.add('error');
                    addStep(resultsDiv, '✗ 测试失败: 未登录状态未重定向');
                } else {
                    resultsDiv.classList.add('error');
                    addStep(resultsDiv, '✗ 测试失败: 重定向到未知页面');
                }
            };
            
            // 设置iframe的src
            // 添加随机数+时间戳参数，强制浏览器加载最新版本
            const timestamp = new Date().getTime();
            const random = Math.random().toString(36).substring(2, 15);
            iframe.src = `http://localhost:8080/static/admin_dashboard.html?t=${timestamp}&r=${random}`;
        }

        function runTest2() {
            const resultsDiv = document.getElementById('results');
            resultsDiv.innerHTML = '';
            
            // 步骤1: 设置登录状态
            addStep(resultsDiv, '设置登录状态...');
            localStorage.setItem('isLoggedIn', 'true');
            localStorage.setItem('username', 'admin');
            addStep(resultsDiv, '✓ 登录状态已设置');
            addStep(resultsDiv, `当前isLoggedIn值: ${localStorage.getItem('isLoggedIn')}`);
            
            // 步骤2: 短暂延迟，确保localStorage更改生效
            addStep(resultsDiv, '等待1秒，确保登录状态生效...');
            setTimeout(function() {
                // 步骤3: 创建iframe加载管理员后台页面
                addStep(resultsDiv, '创建iframe加载管理员后台页面...');
                const iframe = document.createElement('iframe');
                iframe.style.width = '100%';
                iframe.style.height = '400px';
                iframe.style.display = 'block';
                resultsDiv.appendChild(iframe);
                
                // 记录开始加载时间
                const startTime = new Date().getTime();
                let loadCount = 0;
                
                iframe.onload = function() {
                    loadCount++;
                    const currentTime = new Date().getTime();
                    const elapsedTime = (currentTime - startTime) / 1000;
                    
                    const iframeUrl = iframe.contentWindow.location.href;
                    addStep(resultsDiv, `iframe加载完成 (第${loadCount}次加载，耗时${elapsedTime.toFixed(2)}秒)`);
                    addStep(resultsDiv, `iframe当前URL: ${iframeUrl}`);
                    
                    // 防止循环重定向导致的闪烁
                    if (loadCount > 3) {
                        resultsDiv.classList.add('error');
                        addStep(resultsDiv, '✗ 测试失败: 检测到可能的循环重定向');
                        return;
                    }
                    
                    // 检查是否成功访问管理员后台
                    if (iframeUrl.includes('/static/admin_dashboard.html')) {
                        resultsDiv.classList.add('success');
                        addStep(resultsDiv, '✓ 测试通过: 登录后成功访问管理员后台');
                    } else if (iframeUrl.includes('/static/login.html')) {
                        resultsDiv.classList.add('error');
                        addStep(resultsDiv, '✗ 测试失败: 已登录状态仍被重定向到登录页面');
                    } else {
                        resultsDiv.classList.add('error');
                        addStep(resultsDiv, '✗ 测试失败: 重定向到未知页面');
                    }
                };
                
                // 设置iframe的src
                // 添加随机数+时间戳参数，强制浏览器加载最新版本
                const timestamp = new Date().getTime();
                const random = Math.random().toString(36).substring(2, 15);
                iframe.src = `http://localhost:8080/static/admin_dashboard.html?t=${timestamp}&r=${random}`;
            }, 1000); // 1秒延迟
        }

        function addStep(container, text) {
            const stepDiv = document.createElement('div');
            stepDiv.className = 'step';
            stepDiv.textContent = text;
            container.appendChild(stepDiv);
        }
    </script>
</body>
</html>